CS236 Deep Generative Models Lecture 3
课程主页:https://deepgenerativemodels.github.io/
课件资料:https://github.com/Subhajit135/CS236_DGM,https://github.com/deepgenerativemodels/notes
视频地址:https://www.bilibili.com/video/av81625948?from=search&seid=4636291486683332935
这里回顾CS236 Lecture 3的课程内容,这一讲介绍了自回归模型。
Autoregressive Models
例子:MNIST
考虑MNIST数据集$\mathcal D$:
每个图片有$n=28 \times 28 =784$个像素,每个像素为$0$或$1$。我们希望学习一个概率分布$p(v)=p\left(v_{1}, \cdots, v_{784}\right)$,其中$v \in\{0,1\}^{784}$;该概率分布应该有如下效果:如果$v \sim p(v)$,那么$v$看起来像数字。具体思路是定义模型族$\left\{p_{\theta}(v), \theta \in \Theta\right\}$,然后根据训练集$\mathcal D$学习参数$\theta$,后续会讨论几个具体的想法。
Fully Visible Sigmoid Belief Network
我们可以按照一个次序顺序产生图片,例如$1, 2,\ldots, 784$的顺序,利用链式分解得到:
现在我们假设
其中
更一般的,我们有
即每个像素服从伯努利分布,其中参数值和之前的像素值有关。
在上述假设下,需要的参数数量为
整个模型的图示如下:
这种模型的效果如下:
NADE: Neural Autoregressive Density Estimation
该模型是利用神经网络对之前模型进行了改进:
更具体的:
为了减少参数的数量,可以使用权重共享的方法:
假设$W \in \mathbb{R}^{H \times n}$,那么权重的数量为$O(nH)$。
这种模型的效果如下:
一般的离散分布
对于一般的离散分布,需要使用softmax函数
RNADE
之前讨论的是输出为离散的情形,那么对连续随机变量$V_{i} \in \mathbb{R}$,应该如何建模呢?课程中介绍了高斯混合模型:
上述介绍的模型都是autoregressive模型,因为后一时刻的值都和之前时刻的值相关。
Autoencoders
Autoencoder分为encoder $e(.)$和decoder $d(.)$,其中效果为$d(e(x)) \approx x$。一般的autoencoder不是生成模型,因为并没有定义概率分布。那么该如何从autoencoder构造一个生成模型呢?
MADE: Masked Autoregressive density estimator
如果我们使autoencoder变成autoregressive模型,那么自然可以变成生成模型;而autoregressive模型最重要的是顺序,Masked Autoregressive density estimator即做到了这点:
以上图为例,序号为$i$的单元只依赖于上一层序号小于等于$i$的单元。